gtkwidget: refactor code into separate function
authorCarlos Garnacho <carlosg@gnome.org>
Thu, 10 Sep 2015 12:16:20 +0000 (14:16 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 14 Sep 2015 15:38:27 +0000 (17:38 +0200)
This "cancel sequence across widget hierarchy" code will be useful
in other places, so take it out to a separate function.

https://bugzilla.gnome.org/show_bug.cgi?id=754098

gtk/gtkwidget.c

index 7a05785aeff698c422233ef62e61d13114fc9b22..0eda0e21f1a2f0d3fd3babe9ba4fd3c97c89bdf2 100644 (file)
@@ -7335,6 +7335,28 @@ _gtk_widget_run_controllers (GtkWidget           *widget,
   return handled;
 }
 
+static void
+cancel_event_sequence_on_hierarchy (GtkWidget        *widget,
+                                    GtkWidget        *event_widget,
+                                    GdkEventSequence *sequence)
+{
+  gboolean cancel = TRUE;
+
+  while (event_widget)
+    {
+      if (event_widget == widget)
+        cancel = FALSE;
+      else if (cancel)
+        _gtk_widget_cancel_sequence (event_widget, sequence);
+      else
+        _gtk_widget_set_sequence_state_internal (event_widget, sequence,
+                                                 GTK_EVENT_SEQUENCE_DENIED,
+                                                 NULL);
+
+      event_widget = _gtk_widget_get_parent (event_widget);
+    }
+}
+
 gboolean
 _gtk_widget_captured_event (GtkWidget *widget,
                             GdkEvent  *event)
@@ -17077,7 +17099,6 @@ event_controller_sequence_state_changed (GtkGesture            *gesture,
 {
   gboolean handled = FALSE;
   GtkWidget *event_widget;
-  gboolean cancel = TRUE;
   const GdkEvent *event;
 
   handled = _gtk_widget_set_sequence_state_internal (widget, sequence,
@@ -17092,20 +17113,7 @@ event_controller_sequence_state_changed (GtkGesture            *gesture,
     return;
 
   event_widget = gtk_get_event_widget ((GdkEvent *) event);
-
-  while (event_widget)
-    {
-      if (event_widget == widget)
-        cancel = FALSE;
-      else if (cancel)
-        _gtk_widget_cancel_sequence (event_widget, sequence);
-      else
-        _gtk_widget_set_sequence_state_internal (event_widget, sequence,
-                                                 GTK_EVENT_SEQUENCE_DENIED,
-                                                 NULL);
-
-      event_widget = _gtk_widget_get_parent (event_widget);
-    }
+  cancel_event_sequence_on_hierarchy (widget, event_widget, sequence);
 }
 
 static EventControllerData *